package com.dimples.dd.system.service;

import com.dimples.dd.common.model.Option;
import com.dimples.dd.common.pojo.PageResult;
import com.dimples.dd.system.model.entity.SystemDataSourceConfigDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dimples.dd.system.model.form.DataSourceConfigForm;
import com.dimples.dd.system.model.query.DataSourceConfigPageQuery;
import com.dimples.dd.system.model.vo.DataSourceConfigPageVO;

import java.util.List;

public interface SystemDataSourceConfigService extends IService<SystemDataSourceConfigDO> {

    /**
     * 分页查询数据源配置
     *
     * @param queryParams 查询参数
     * @return 分页数据
     */
    PageResult<DataSourceConfigPageVO> selectDataSourceConfigPage(DataSourceConfigPageQuery queryParams);

    /**
     * 数据源下拉列表
     *
     * @return 数据源下拉列表
     */
    List<Option<String>> listDataSourceConfigOptions();

    /**
     * 数据源表单数据
     *
     * @param id 数据源ID
     * @return 数据源表单数据
     */
    DataSourceConfigForm selectDataSourceConfigForm(Long id);

    /**
     * 新增数据源
     *
     * @param dataSourceConfigForm 数据源表单数据
     * @return 是否新增成功
     */
    boolean createDataSourceConfig(DataSourceConfigForm dataSourceConfigForm);

    /**
     * 修改数据源
     *
     * @param dataSourceConfigFormForm 数据源表单数据
     * @return 是否修改成功
     */
    boolean updateDataSourceConfig(DataSourceConfigForm dataSourceConfigFormForm);

    /**
     * 删除数据源
     *
     * @param ids 数据源ID，多个以英文逗号(,)分割
     * @return 是否删除成功
     */
    boolean deleteDataSourceConfigs(String ids);

    /**
     * 测试数据源连接
     *
     * @param dataSourceConfigForm 数据源表单数据
     * @return 是否测试成功
     */
    boolean testConnection(DataSourceConfigForm dataSourceConfigForm);
}
